/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.sapra.abc;


import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.sapra.core.DBManager;
import org.sapra.dao.Aseguradora;
import org.sapra.dao.Empresa;
import org.sapra.dao.Esquemapagopracticante;
import org.sapra.dao.Planseguro;
import org.sapra.dao.Polizaseguro;
import org.sapra.dao.Practicante;

/**
 *
 * @author ppratsc
 */
public class dPracticante {

    String datos_fecha;

    public static final int ACTIVOS = 0;
    public static final int INACTIVOS = 1;
    public static final int TODOS=2;

    public dPracticante(){}

    static List<Aseguradora> getAseguradora(int empresaId){
        List<Aseguradora> resp = null;

        String sql="SELECT a.* FROM aseguradoraempresa ae "
                + " INNER JOIN aseguradora a"
                + " ON ae.fk_aseguradoraId=a.aseguradoraId"
                + " WHERE fk_empresaId="+empresaId;
        try {
                resp = DBManager.getQuery(Aseguradora.class,sql);
        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            return null;
        }
        return resp;
    }
    static List<Planseguro> getPlanes(int aseguradoraId,int numMes){
        List<Planseguro> resp = null;
        String sql="SELECT * FROM planseguro WHERE fk_aseguradoraId="+aseguradoraId+" "
                + " AND (mesesAmparados=1 OR mesesAmparados="+numMes+")";
        try {
                resp = DBManager.getQuery(Planseguro.class,sql);
        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            return null;
        }
        return resp;
    }

    public static int pract_siguiente(){
        int id=0;
        List<Practicante> lista;
        Practicante p;
        String sql="select practicanteId from practicante order by practicanteId desc limit 1";
        try {
             lista = DBManager.getQuery(Practicante.class,sql);
             if(!lista.isEmpty()){
                    p=(Practicante)lista.get(0);
                    return p.getPracticanteId()+1;
             }

        } catch (Exception e) {
            return 0;
        }
        return id;
    }
    public static List<Practicante> getPracticantes(Empresa empresa, int filtro) {
        List<Practicante> resp = null;
        
        String sql = "SELECT p.* "
                + " FROM practicante p "
                + " INNER JOIN departamento d "
                + " ON p.fk_departamentoId=d.departamentoId "
                + " INNER JOIN empresa e "
                + " ON e.empresaId=d.fk_empresaId";
        if(filtro!=TODOS){
            if(filtro == ACTIVOS){ // Practicantes Activos
            sql += " WHERE ((p.fec_cancelacion IS NULL AND p.fec_terminoContrato>=CURRENT_DATE()) "
                    + " OR (p.fec_cancelacion IS NOT NULL AND p.fec_Cancelacion>=CURRENT_DATE()))";

            }else if(filtro == INACTIVOS){ // Practicantes Inactivos
                sql += " WHERE ((fec_Cancelacion IS NULL AND p.fec_terminoContrato<CURRENT_DATE()) "
                        + " OR (p.fec_cancelacion IS NOT NULL AND p.fec_Cancelacion<CURRENT_DATE()))";
            }
        }
        
        
        sql += " AND e.empresaId = " + empresa.getEmpresaId()+" "
                + " ORDER BY concat(p.nombre,' ',p.paterno,' ',p.materno)";

        
        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Practicante.class,sql);
        } catch (Exception ex) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, ex);
        }

        return resp;
    }
    static List<Practicante> busqueda(int idEmpresa,String cadena,int opc){
        List<Practicante> resp = null;
        String sql = "SELECT p.* FROM practicante p "
                + " INNER JOIN departamento d"
                + " ON d.departamentoId=p.fk_departamentoId"
                + " INNER JOIN empresa e"
                + " ON d.fk_empresaId=e.empresaId "
                + " WHERE ";
                switch(opc){
                    case 0:sql+=" (p.nombre LIKE '"+cadena+"%' OR p.nombre LIKE '%"+cadena+"%' OR p.nombre LIKE '%"+cadena+"')";break;
                    case 1:sql+=" (p.paterno LIKE '"+cadena+"%' OR p.paterno LIKE '%"+cadena+"%' OR p.paterno LIKE '%"+cadena+"') ";break;
                    case 2:sql+=" (p.materno LIKE '"+cadena+"%' OR p.materno LIKE '%"+cadena+"%' OR p.materno LIKE '%"+cadena+"')";break;
                    case 3:sql+=" (CONCAT(p.nombre,' ',p.paterno,' ',p.materno)  LIKE '"+cadena+"%' "
                            + " OR CONCAT(p.nombre,' ',p.paterno,' ',p.materno)  LIKE '%"+cadena+"%'"
                            + " OR CONCAT(p.nombre,' ',p.paterno,' ',p.materno)  LIKE '%"+cadena+"')  ";
                                break;
                }
                sql+=" AND e.empresaId="+idEmpresa+" ORDER BY p.nombre ASC";
                //System.out.println(sql);
        try {
            resp = DBManager.getQuery(Practicante.class,sql);
        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            return null;
        }
        return resp;
    }
    static void ValidarAlta(Practicante p) {
        //Validar que la Fecha de Inicio no sea mayor a 2 meses

        //Validar que la Fecha de Inicio no sea

        //NOTIFICACIONES
    }

   static void ValidarRenovacion(Practicante p,Practicante mCurrent) {
        //dPracticante.ValidarAlta(p);
        // Validar que la Fecha de Inicio nom sea mayor a un periodod que la fecha de fin del
              // pasado
        //NOTIFICACIONES
    }

    static void ValidarAlta(Practicante p, Practicante mCurrent) {
        //NOTIFICACIONES
    }

    static void ValidarEdicion(Practicante p, Practicante mCurrent) {
        //NOTIFICACIONES
    }


    static boolean getRFC(Practicante p) {
        //Calcula el RFC en Base a los datos

        if(p.getNombre().isEmpty() || p.getPaterno().isEmpty() ||
                p.getMaterno().isEmpty() || p.getFec_nacimiento() == null){
            return false;
        }
        

        return true;
    }

    static int SaveInsert(Practicante p) {
        int resp = -1;
        String sql;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //INSERT DE UN NUEVO PRACTICANTE
        sql  = "INSERT INTO practicante(matricula,sueldo,total_ahorro,porcentaje_ahorro,fijo_ahorro,fec_cancelacion,motivo_cancelacion,";
        sql += "sexo,rfc,fec_nacimiento,ciclo_escolar,comentarios,fk_carreraId,fk_nacionalidadId,fk_departamentoId,fk_centroCostoId,";
        sql += "fk_universidadId,edo_civil,fk_direccionId,foto,fec_inicioContrato,fec_terminoContrato,email,homoclave,paterno,materno,";
        sql += "nombre,escolaridad,telefono,grado,reportara,proyecto,horarioInicio,horarioFin,status,ligaPracticanteId,fecUltimopago,";
        sql += "numSiga,regimen,numEmpleado) VALUES( ";

        sql += "'" + p.getMatricula() + "'";
        sql += "," + p.getSueldo();
        sql += ",0"; // total_ahorro
        sql += ",0"; // porcentaje_ahorro
        sql += ",0"; // fijo_ahorro
        sql += ",NULL"; // fec_cancelacion
        sql += ",''"; // motivo_cancelacion
        sql += ",'" + p.getSexo() + "'";
        //sql += ",'" + p.getRfc_Str(p.getNombre(), p.getPaterno(), p.getMaterno(), p.getFec_nacimiento()) + "'";
        sql += ",'XXXXXXXXXX'";
        sql += ",'" + sdf.format(p.getFec_nacimiento()) + "'";
        sql += ",'" + p.getCiclo_escolar() + "'";
        sql += ",''"; //comentarios
        sql += "," + p.getFk_carreraId();
        sql += ",1"; //fk_nacionalidadId
        sql += "," + p.getFk_departamentoId();
        sql += "," + p.getFk_centroCostoId();
        sql += "," + p.getFk_universidadId();
        sql += ",'" + p.getEdo_civil() + "'";
        sql += "," + p.getFk_direccionId();
        sql += ",NULL"; // foto
        sql += ",'" + sdf.format(p.getFec_inicioContrato()) + "'";
        sql += ",'" + sdf.format(p.getFec_terminoContrato()) + "'";
        sql += ",'" + p.getEmail() + "'";
        sql += ",''"; // homoclave
        sql += ",'" + p.getPaterno() + "'";
        sql += ",'" + p.getMaterno() + "'";
        sql += ",'" + p.getNombre() + "'";
        sql += ",'" + p.getEscolaridad() + "'";
        sql += ",'" + p.getTelefono() + "'";
        sql += ",'" + p.getGrado() + "'";
        sql += ",'" + p.getReportara() + "'";
        sql += ",'" + p.getProyecto() + "'";
        sql += ",'" + p.getHorarioInicio() + "'";
        sql += ",'" + p.getHorarioFin() + "'";
        sql += ",'ACTIVO'"; // status
        sql += ","+p.getLigaPracticanteId(); // ligaPracticanteId
        sql += ",NULL"; // fecUltimopago
        sql += ",NULL"; // numSiga
        sql += ",'S'"; // regimen
        sql += ",'" + p.getNumEmpleado() + "'";
        sql += ")";

        try {
            resp = DBManager.insert(sql);
        } catch (SQLException ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            resp = -1;
        }

        return resp;
    }
    static int savePoliza(Polizaseguro ps){
        String sql="";
        int resp = -1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                sql="INSERT INTO polizaseguro(fec_creacion,fec_inicio,fec_termino,"
                        + " beneficiario1,porcentaje1,parentesco1,"
                        + " beneficiario2,porcentaje2,parentesco2,"
                        + " numero_poliza,fk_practicanteId,fk_planSeguroId, "
                        + "cobrarPolizaAEmpresa,revisadoPorAseguradora,"
                        + "rutaArchivo,pagado,fk_prefacturaId)"
                        + "values("
                        + " '"+sdf.format(ps.getFecCreacion())+"','"+sdf.format(ps.getFec_inicio())+"','"+sdf.format(ps.getFec_termino())+"',"
                        + " '"+ps.getBeneficiario1()+"',"+ps.getPorcentaje1()+",'"+ps.getParentesco1()+"',"
                        + " '"+ps.getBeneficiario2()+"',"+ps.getPorcentaje2()+",'"+ps.getParentesco2()+"',"
                        + " '',"+ps.getFk_practicanteId()+","+ps.getFk_planseguroId()+","
                        + " "+ps.isCobrarPolizaAEmpresa()+",false,"
                        + " '',false,"+ps.getFkprefacturaId()+");";
                        resp = DBManager.insert(sql);
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("Error savePoliza");
                    return -1;
                }

        return resp;
    }
    static int multiplePoliza(ArrayList<Polizaseguro> lista){
        Polizaseguro ps;
        String sql="";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        int resp=-1;
        try {
            if(lista.isEmpty())
                return -1;

            sql="INSERT INTO polizaseguro(fec_creacion,fec_inicio,fec_termino,"
                        + " beneficiario1,porcentaje1,parentesco1,"
                        + " beneficiario2,porcentaje2,parentesco2,"
                        + " numero_poliza,fk_practicanteId,fk_planSeguroId, "
                        + "cobrarPolizaAEmpresa,revisadoPorAseguradora,"
                        + "rutaArchivo,pagado,fk_prefacturaId)"
                        + "values";
            for(int i=0;i<lista.size();i++){
                ps=(Polizaseguro)lista.get(i);
                sql+=" ('"+sdf.format(ps.getFecCreacion())+"','"+sdf.format(ps.getFec_inicio())+"','"+sdf.format(ps.getFec_termino())+"',"
                        + " '"+ps.getBeneficiario1()+"',"+ps.getPorcentaje1()+",'"+ps.getParentesco1()+"',"
                        + " '"+ps.getBeneficiario2()+"',"+ps.getPorcentaje2()+",'"+ps.getParentesco2()+"',"
                        + " '',"+ps.getFk_practicanteId()+","+ps.getFk_planseguroId()+","
                        + " "+ps.isCobrarPolizaAEmpresa()+",false,"
                        + " '',false,"+ps.getFkprefacturaId()+")";
                if((i+1)<lista.size())
                    sql+=",";
            }
            resp=DBManager.insert(sql);
        } catch (Exception e) {
            return -1;
        }
        return resp;
    }
    static int updatePoliza(Polizaseguro p){
        int resp = -1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            String sql="update polizaseguro set "
                    + " fec_inicio='"+sdf.format(p.getFec_inicio())+"', "
                    + " fec_termino='"+sdf.format(p.getFec_termino())+"', "
                    + " beneficiario1='"+p.getBeneficiario1()+"', "
                    + " porcentaje1="+p.getPorcentaje1()+", "
                    + " parentesco1='"+p.getParentesco1()+"', "
                    + " beneficiario2='"+p.getBeneficiario2()+"', "
                    + " porcentaje2="+p.getPorcentaje2()+", "
                    + " pagado="+false+", "
                    + " parentesco2='"+p.getParentesco2()+"'"
                    + " WHERE polizaSeguroId="+p.getPolizaSeguroId();
            resp = DBManager.Update(sql);
            System.out.println(sql);
        } catch (Exception ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            resp = -1;
        }
        return resp;
    }
    static int SaveUpdate(Practicante p) {
        int resp = -1;
        String sql;

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //UPDATE DE UN PRACTICANTE
        sql  = "UPDATE practicante SET ";

        //SOLO LOS CAMPOS PERMITIDOS A MODIFICAR
        sql += "nombre = '" + p.getNombre() + "'";
        sql += ",paterno = '" + p.getPaterno() + "'";
        sql += ",materno = '" + p.getMaterno() + "'";
        sql += ",matricula = '" + p.getMatricula() + "'";
        sql += ",sueldo = " + p.getSueldo();
        sql += ",rfc = '" + p.getRfc_Str(p.getNombre(), p.getPaterno(), p.getMaterno(), p.getFec_nacimiento());
        sql += "',sexo = '" + p.getSexo() + "'";
        sql += ",ciclo_escolar = '" + p.getCiclo_escolar() + "'";
        sql += ",comentarios = ''"; //comentarios
        sql += ",fk_carreraId = " + p.getFk_carreraId();
        sql += ",fk_departamentoId = " +p.getFk_departamentoId();
        
        sql += ",fk_centroCostoId = " + p.getFk_centroCostoId();
        sql += ",fk_universidadId = " + p.getFk_universidadId();
        sql += ",edo_civil = '" + p.getEdo_civil() + "'";
        sql += ",fk_direccionId = " + p.getFk_direccionId();
        sql += ",email = '" + p.getEmail() + "'";
        sql += ",escolaridad = '" + p.getEscolaridad() + "'";
        sql += ",telefono = '" + p.getTelefono() + "'";
        sql += ",grado = '" + p.getGrado() + "'";
        sql += ",reportara = '" + p.getReportara() + "'";
        sql += ",proyecto = '" + p.getProyecto() + "'";
        sql += ",horarioInicio = '" + p.getHorarioInicio() + "'";
        sql += ",horarioFin = '" + p.getHorarioFin() + "'";
        sql += ",numEmpleado = '" + p.getNumEmpleado() + "'";
        sql += ",numEmpleado = '" + p.getNumEmpleado() + "'";
        sql+=  ",fec_inicioContrato ='" + sdf.format(p.getFec_inicioContrato()) + "'";
        sql+=  ",fec_terminoContrato ='" + sdf.format(p.getFec_terminoContrato()) + "'";
        sql += " WHERE practicanteId = " + p.getPracticanteId();

        try {
            resp = DBManager.Update(sql);
            System.out.println(sql);
        } catch (SQLException ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            resp = -1;
        }


        return resp;
    }
    public void UpdatePoliza(String poliza,String url,int idPrac){
        int resp=-1;
        String sql="UPDATE polizaseguro SET numero_poliza='"+poliza+"',rutaArchivo='"+url+"' WHERE fk_practicanteId="+idPrac;
        try {
            resp = DBManager.Update(sql);
        } catch (Exception e) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, e);
            resp = -1;
        }


    }
    static int Baja(Practicante p, Date fbaja) {
        int resp = -1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        String sql = "UPDATE practicante SET fec_cancelacion = ";
        sql += "'" + sdf.format(fbaja) + "' ,"
                + "motivo_cancelacion='"+p.getMotivo_cancelacion()+"' ";
        sql += " WHERE practicanteId = " + p.getPracticanteId();

        String sql2 = "UPDATE practicante SET status = ";
        sql2 +="'BAJA'";
        sql2 += " WHERE practicanteId = " + p.getPracticanteId();
        try {
            resp = DBManager.Update(sql);
            resp = DBManager.Update(sql2);
        } catch (SQLException ex) {
            Logger.getLogger(dEmpresa.class.getName()).log(Level.SEVERE, null, ex);
            resp = -1;
        }
        return resp;
    }

    static List<Polizaseguro> getSeguros(int practicante){
        List<Polizaseguro> resp = null;
        String sql="SELECT * FROM polizaseguro WHERE fk_practicanteId="+practicante+" ORDER BY fec_creacion ASC";
        //System.out.println(sql);
        try {
                resp = DBManager.getQuery(Polizaseguro.class,sql);
        } catch (Exception e) {
            e.printStackTrace();
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            return null;
        }
        return resp;
    }
    /*static int guardaDeduccion(double factor,int tiempo,int fk_practicanteId,boolean interno,int periodo){
        String sql="";
        int resp = -1;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                sql="insert into facturaajuste(factor,cometario,tiempo,fk_convenioid,interno,fk_periodoid) values("
                        + ""+factor
                        + ",'Generado Por el Sistema debido a los retroactivos'"
                        + ","+tiempo
                        + ","+fk_practicanteId+",";
                        sql+= (interno)?"TRUE":"FALSE";
                        sql+= ","+periodo
                        + ");";
                        resp = DBManager.insert(sql);
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("Error savePoliza");
                    return -1;
                }

        return resp;
    }*/
    
        public static List<Esquemapagopracticante> getPagoSemanal(int pagoSemanal){
        List<Esquemapagopracticante> resp = null;
        String sql="select * from esquemapagopracticante where esquemaPagoPracticanteId="+pagoSemanal;
        try {
                resp = DBManager.getQuery(Esquemapagopracticante.class,sql);
        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            return null;
        }
        return resp;
    }
        ///para el cambio de empresa

        public static Practicante getPracticante(int id) {
        Practicante resp = null;

        String sql = "SELECT ";
        sql += "* ";
        sql += " FROM ";
        sql += "practicante";
        sql += " WHERE ";
        sql += " practicanteId = " + id;
        sql += " and status = 'activo'";

        List<Practicante> pracs;
        try {
            DBManager db=new DBManager();
            // Busca la universidad en la base de datos
            pracs = db.getQuery(Practicante.class,sql);
            db=null;
            resp=new Practicante();
            resp=pracs.get(0);
        } catch (Exception ex) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, ex);
            return resp;
        }

        return resp;
    }
        static List<Practicante> getConvenios(String nom, String pat, String mat, String fec){
               List<Practicante> resp = null;

        String sql ="SELECT * FROM practicante WHERE nombre like'%"+nom+"%'";
        sql+=" and paterno='"+pat+"'";
        sql+=" and materno='"+mat+"'";
        //sql+=" and fec_nacimiento='"+fec+"' ";
        //sql+=" and fec_nacimiento like '%"+fec+"%' ";
        sql+=" ORDER BY fec_inicioContrato;";
        try {
            // Busca las Empresas del Usuario
            resp = DBManager.getQuery(Practicante.class,sql);
            System.out.println(sql);
        } catch (Exception ex) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, ex);
        }

        return resp;
    }
        public static int UpdateSeguro(int idPrac, boolean cobro, int idfact){
        int resp=-1;
        String sql="UPDATE polizaseguro SET pagado="+cobro+",fk_prefacturaId="+idfact+" WHERE fk_practicanteId="+idPrac+" LIMIT 1";
        try {
            resp = DBManager.Update(sql);
            
        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            resp = -1;
        }
     return resp;

    }

        public static int UpdateSeguroRetro(int idPrac, boolean cobro, int idfact, int idfact1){
        int resp=-1;
        String sql="UPDATE polizaseguro SET pagado="+cobro+", fk_prefacturaId="+idfact+" WHERE fk_practicanteId="+idPrac+" and fk_prefacturaId="+idfact1+" LIMIT 1";
        try {
            resp = DBManager.Update(sql);

        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            resp = -1;
        }
     return resp;

    }

        public static int UpdateSeguroRetro2(int idPrac2, boolean cobro, int idprac1, int idfact1){

        int resp=-1;
        List<Polizaseguro> res = null;
        res=getSeguros(idPrac2);
        String sql="";
        try {
        if(!(res.isEmpty())&&!(res==null)){
            for(int i=0; i<res.size();i++){
           sql="UPDATE polizaseguro SET pagado="+cobro+", fk_prefacturaId="+idfact1+", fk_planSeguroId="+res.get(i).getFk_planseguroId()+" WHERE fk_practicanteId="+idprac1/*+" and fk_prefacturaId="+idfact1+" LIMIT 1"*/;
           resp = DBManager.Update(sql);
            }
        }
 

        } catch (Exception e) {
            Logger.getLogger(dPracticante.class.getName()).log(Level.SEVERE, null, e);
            resp = -1;
        }
     return resp;

    }
    public static boolean seg_pract_prox(int periodoId,int pract_Id,int periodo_nuevo){
         String sql="UPDATE polizaseguro SET pagado=false,fk_prefacturaId="+periodo_nuevo+" "
                 + " WHERE fk_practicanteId="+pract_Id+" AND fk_prefacturaId"+periodoId;
        try {
            
        } catch (Exception e) {
        }

        return true;
    }

        
    }

     
/*
 msj=Validar();
        if(msj!=null){
             add(new wAviso("Error", msj));
             return ;
        }

        //Obtiene los Campos
        Practicante p = getFields();
        if(p==null){
            return;
        }
        periodo_Actual(p.getFec_inicioContrato());
        PrefacturaSeguro(p);

        //Calula el RFC
        if( dPracticante.getRFC(p) == false ){
            add(new wAviso("ERROR","NO SE PUEDE CALCULAR EL RFC"));
            return;
        }
        int dir=0;
        try {
            if(mAction == ALTA){
                dPracticante.ValidarAlta(p);
                dir = mDireccion.SaveDireccion(true);
            }else if(mAction == RENOVAR){
                dPracticante.ValidarRenovacion(p,mCurrent);
                if(mCurrent.getFec_cancelacion()==null){
                     if( dPracticante.Baja(mCurrent,mCurrent.getFec_terminoContrato()) == -1){
                            add(new wAviso("ERROR","ERROR EN LA BAJA"));
                            return;
                        }
                }
                dir = mDireccion.SaveDireccion(true);
            }else if(mAction == EDITAR){
                dPracticante.ValidarEdicion(p,mCurrent);
                dir = dDireccion.update(encapsulacion());
            }
        }catch(Exception ex) {
            Logger.getLogger(vABCP.class.getName()).log(Level.SEVERE, null, ex);
            add(new wAviso("ERROR",ex.toString()));
            return;
        }

        // Validar Poliza, Fecha de Inicio / Meses

        // Generar Poliza de Seguro en Aseguradora

        // Guarda la Direccion

        if(dir < 0){
            add(new wAviso("ERROR","NO SE PUEDE GUARDAR LA DIRECCION"));
            return;
        }
        p.setFk_direccionId(dir);


 */
